Skip to content

SPLAT-2826: Promote VSphereMultiVCenterDay2 to GA - #2968

Open
vr4manta wants to merge 3 commits into
openshift:masterfrom
vr4manta:SPLAT-2826
Open

SPLAT-2826: Promote VSphereMultiVCenterDay2 to GA#2968
vr4manta wants to merge 3 commits into
openshift:masterfrom
vr4manta:SPLAT-2826

Conversation

@vr4manta

@vr4manta vr4manta commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

SPLAT-2826

Changes

  • Promoted VSphereMultiVCenterDay2 to GA

@openshift-merge-bot

Copy link
Copy Markdown
Contributor

Pipeline controller notification
This repo is configured to use the pipeline controller. Second-stage tests will be triggered either automatically or after lgtm label is added, depending on the repository configuration. The pipeline controller will automatically detect which contexts are required and will utilize /test Prow commands to trigger the second stage.

For optional jobs, comment /test ? to see a list of all defined jobs. To trigger manually all jobs from second stage use /pipeline required command.

This repository is configured in: LGTM mode

@openshift-ci-robot openshift-ci-robot added the jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. label Aug 3, 2026
@openshift-ci-robot

openshift-ci-robot commented Aug 3, 2026

Copy link
Copy Markdown

@vr4manta: This pull request references SPLAT-2826 which is a valid jira issue.

Warning: The referenced jira issue has an invalid target version for the target branch this PR targets: expected the story to target the "5.0.0" version, but no target version was set.

Details

In response to this:

SPLAT-2826

Changes

  • Promoted VSphereMultiVCenterDay2 to GA

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the openshift-eng/jira-lifecycle-plugin repository.

@openshift-ci

openshift-ci Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Hello @vr4manta! Some important instructions when contributing to openshift/api:
API design plays an important part in the user experience of OpenShift and as such API PRs are subject to a high level of scrutiny to ensure they follow our best practices. If you haven't already done so, please review the OpenShift API Conventions and ensure that your proposed changes are compliant. Following these conventions will help expedite the api review process for your PR.

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

The change enables VSphereMultiVCenterDay2 for all deployment profiles. It updates Infrastructure and ControllerConfig CRDs to allow post-install vCenter additions, modifications, and partial removals. New validations prevent mixed additions and removals, require failure domains to reference configured vCenters, and preserve vsphere.vcenters after configuration.

Suggested reviewers: joelspeed, sinnykumari

🚥 Pre-merge checks | ✅ 15
✅ Passed checks (15 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely states that VSphereMultiVCenterDay2 is promoted to GA.
Description check ✅ Passed The description directly states the promotion of VSphereMultiVCenterDay2 to GA, matching the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Stable And Deterministic Test Names ✅ Passed The PR changes no Ginkgo titles or test-name fields; the only test-fixture edits remove a feature gate and add a static schema patch.
Test Structure And Quality ✅ Passed The PR changes no Ginkgo or *_test.go files. Its only test edit is a declarative YAML schema-test fixture, so the Ginkgo quality criteria are not applicable.
Microshift Test Compatibility ✅ Passed The PR adds no Ginkgo e2e tests or test declarations; its only test-path change is a YAML schema fixture patch, so the MicroShift API compatibility check is not applicable.
Single Node Openshift (Sno) Test Compatibility ✅ Passed This PR does not add any new Ginkgo e2e tests. The changes are limited to feature gate declarations, type definitions, documentation, CRD schema files, and test data—none of which contain Ginkgo te...
Topology-Aware Scheduling Compatibility ✅ Passed The PR changes vSphere CRD validation, API documentation, generated schemas, and feature-gate lists only; it adds no workloads or scheduling constraints such as affinity, selectors, replicas, or PDBs.
Ote Binary Stdout Contract ✅ Passed The committed PR change is only a YAML test-schema edit; the repository has no OTE or openshift-tests binary, and its Ginkgo setup writes logs to GinkgoWriter.
Ipv6 And Disconnected Network Test Compatibility ✅ Passed The PR adds no Ginkgo e2e tests or Ginkgo declarations. It only updates an Infrastructure YAML test fixture, so this compatibility check is not applicable.
No-Weak-Crypto ✅ Passed The PR changes feature gates, documentation, CRD validation, and generated manifests; review found no added weak-crypto algorithms, custom crypto, or secret comparisons.
Container-Privileges ✅ Passed The PR adds no privileged, hostPID, hostNetwork, hostIPC, SYS_ADMIN, allowPrivilegeEscalation, root UID/GID, or securityContext settings; changed YAML contains only CRDs and feature-gate data.
No-Sensitive-Data-In-Logs ✅ Passed The PR changes feature metadata, validation comments, generated schemas, and tests only; no logging calls or sensitive values were added.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@openshift-ci openshift-ci Bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Aug 3, 2026
@openshift-ci
openshift-ci Bot requested review from JoelSpeed and sinnykumari August 3, 2026 17:02
@qodo-for-rh-openshift

Copy link
Copy Markdown

PR Summary by Qodo

Promote VSphereMultiVCenterDay2 to GA and harden vSphere CRD validations

✨ Enhancement ⚙️ Configuration changes 📝 Documentation 🕐 20-40 Minutes

Grey Divider

AI Description

• Enable VSphereMultiVCenterDay2 in default and OKD feature gate sets.
• Update vSphere CRD schema validations for safer multi-vCenter day-2 edits.
• Refresh feature gate documentation and payload featuregate manifests.
Diagram

graph TD
A([Cluster admin]) --> B["FeatureGate: VSphereMultiVCenterDay2"] --> C["features/features.go"] --> D["payload featuregate manifests"]
A --> E["Infrastructure / ControllerConfig"] --> F(("vSphere CRD schema")) --> G["CEL validations"]
C --> H["features.md"]
subgraph Legend
direction LR
_usr(["Actor"]) ~~~ _cfg["Config / code"] ~~~ _crd(("Schema / CRD"))
end
Loading
High-Level Assessment

The approach is the standard, lowest-risk path for GA promotion: enable the feature gate in Default/OKD and enforce invariants at the API boundary via CRD CEL validations. Alternatives like controller/admission-webhook enforcement would add operational complexity and reduce early feedback to users compared to schema-level validation.

Files changed (14) +135 / -43

Enhancement (1) +2 / -2
features.goEnable VSphereMultiVCenterDay2 in Default and OKD feature sets +2/-2

Enable VSphereMultiVCenterDay2 in Default and OKD feature sets

• Updates the VSphereMultiVCenterDay2 feature gate registration so it is enabled for Default and OKD in addition to TechPreview/DevPreview contexts, reflecting GA promotion.

features/features.go

Documentation (1) +1 / -1
features.mdUpdate feature gate matrix for VSphereMultiVCenterDay2 GA promotion +1/-1

Update feature gate matrix for VSphereMultiVCenterDay2 GA promotion

• Adjusts the feature gate documentation table so VSphereMultiVCenterDay2 is reflected in the GA-enabled set (and reordered accordingly).

features.md

Other (12) +132 / -40
0000_10_config-operator_01_infrastructures-Default.crd.yamlAdd multi-vCenter safety validations to Infrastructure CRD (Default) +14/-3

Add multi-vCenter safety validations to Infrastructure CRD (Default)

• Adds CEL validations to the vSphere vcenters list to prevent simultaneous add/remove edits and to ensure failureDomains reference an existing vCenter. Replaces the prior post-install single-vCenter restriction with a rule preventing removal of vcenters once set.

config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-Default.crd.yaml

0000_10_config-operator_01_infrastructures-OKD.crd.yamlAdd multi-vCenter safety validations to Infrastructure CRD (OKD) +14/-3

Add multi-vCenter safety validations to Infrastructure CRD (OKD)

• Mirrors the Default CRD updates: prevents mixed add/remove operations on vcenters, validates failureDomain-to-vCenter mapping, and disallows removing vcenters after being set.

config/v1/zz_generated.crd-manifests/0000_10_config-operator_01_infrastructures-OKD.crd.yaml

0000_80_machine-config_01_controllerconfigs-Default.crd.yamlAdd multi-vCenter safety validations to ControllerConfig CRD (Default) +16/-4

Add multi-vCenter safety validations to ControllerConfig CRD (Default)

• Adds CEL rules preventing simultaneous add/remove edits to vcenters and ensuring failureDomains have corresponding vCenter entries. Removes the prior single-vCenter post-install constraint and instead prevents removing vcenters after they are set.

machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml

0000_80_machine-config_01_controllerconfigs-OKD.crd.yamlAdd multi-vCenter safety validations to ControllerConfig CRD (OKD) +16/-4

Add multi-vCenter safety validations to ControllerConfig CRD (OKD)

• Applies the same multi-vCenter and failure domain consistency validations to the OKD variant of the ControllerConfig CRD, and prevents removing vcenters once configured.

machineconfiguration/v1/zz_generated.crd-manifests/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml

0000_10_config-operator_01_infrastructures-Default.crd.yamlPropagate Infrastructure CRD multi-vCenter validations into payload (Default) +14/-3

Propagate Infrastructure CRD multi-vCenter validations into payload (Default)

• Carries the new vcenters and failureDomains CEL validations into the shipped payload CRD for Default, including the updated rule set that supports multi-vCenter day-2 edits.

payload-manifests/crds/0000_10_config-operator_01_infrastructures-Default.crd.yaml

0000_10_config-operator_01_infrastructures-OKD.crd.yamlPropagate Infrastructure CRD multi-vCenter validations into payload (OKD) +14/-3

Propagate Infrastructure CRD multi-vCenter validations into payload (OKD)

• Carries the same new CEL validations into the OKD payload CRD for Infrastructure, aligning OKD with Default behavior.

payload-manifests/crds/0000_10_config-operator_01_infrastructures-OKD.crd.yaml

0000_80_machine-config_01_controllerconfigs-Default.crd.yamlPropagate ControllerConfig CRD multi-vCenter validations into payload (Default) +16/-4

Propagate ControllerConfig CRD multi-vCenter validations into payload (Default)

• Ships the ControllerConfig CRD validation changes in the payload: prevents mixed add/remove vcenter updates, enforces failureDomain-vCenter consistency, and disallows removing vcenters once set.

payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-Default.crd.yaml

0000_80_machine-config_01_controllerconfigs-OKD.crd.yamlPropagate ControllerConfig CRD multi-vCenter validations into payload (OKD) +16/-4

Propagate ControllerConfig CRD multi-vCenter validations into payload (OKD)

• Mirrors Default payload changes for OKD ControllerConfig CRD, ensuring consistent schema enforcement across variants.

payload-manifests/crds/0000_80_machine-config_01_controllerconfigs-OKD.crd.yaml

featureGate-4-10-Hypershift-Default.yamlMove VSphereMultiVCenterDay2 into GA-enabled Hypershift Default payload set +3/-3

Move VSphereMultiVCenterDay2 into GA-enabled Hypershift Default payload set

• Removes VSphereMultiVCenterDay2 from its prior list position and adds it to the GA-enabled section of the Hypershift Default feature gate payload.

payload-manifests/featuregates/featureGate-4-10-Hypershift-Default.yaml

featureGate-4-10-Hypershift-OKD.yamlMove VSphereMultiVCenterDay2 into GA-enabled Hypershift OKD payload set +3/-3

Move VSphereMultiVCenterDay2 into GA-enabled Hypershift OKD payload set

• Updates the Hypershift OKD feature gate payload to include VSphereMultiVCenterDay2 in the GA-enabled set, matching Default behavior.

payload-manifests/featuregates/featureGate-4-10-Hypershift-OKD.yaml

featureGate-4-10-SelfManagedHA-Default.yamlMove VSphereMultiVCenterDay2 into GA-enabled SelfManagedHA Default payload set +3/-3

Move VSphereMultiVCenterDay2 into GA-enabled SelfManagedHA Default payload set

• Promotes VSphereMultiVCenterDay2 within the SelfManagedHA Default payload feature gate list to the GA-enabled set.

payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-Default.yaml

featureGate-4-10-SelfManagedHA-OKD.yamlMove VSphereMultiVCenterDay2 into GA-enabled SelfManagedHA OKD payload set +3/-3

Move VSphereMultiVCenterDay2 into GA-enabled SelfManagedHA OKD payload set

• Promotes VSphereMultiVCenterDay2 within the SelfManagedHA OKD payload feature gate list to the GA-enabled set, aligning with the GA promotion.

payload-manifests/featuregates/featureGate-4-10-SelfManagedHA-OKD.yaml

@qodo-for-rh-openshift

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider

Great, no issues found!

Qodo reviewed your code and found no material issues that require review

Grey Divider

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

@vr4manta

vr4manta commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

/retest

- op: remove
path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/platformSpec/properties/vsphere/properties/vcenters/minItems
- op: remove
path: /spec/versions/0/schema/openAPIV3Schema/properties/spec/properties/platformSpec/properties/vsphere/x-kubernetes-validations/0

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: patching by array index (x-kubernetes-validations/0) is fragile; if the rule order changes in a future generation, this silently patches out the wrong rule. Not a blocker since it matches the current generated output, but worth noting.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i agree. i wasn't sure of a way to patch it out for ratcheting tests. Is there something better i can do for this test?

@saschagrunert saschagrunert left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CEL validation rules are correct across all edge cases (pure adds, removes, swaps, simultaneous add+remove, no-change updates, failure domain cross-validation). Promotion mechanics are sound, ratcheting is handled properly.

One minor nit: config/v1/types_infrastructure.go:1699 still says "in TechPreview" in the vcenters godoc, but the field is now Default.

@openshift-ci

openshift-ci Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: saschagrunert
Once this PR has been reviewed and has the lgtm label, please assign everettraven for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@vr4manta

vr4manta commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

CEL validation rules are correct across all edge cases (pure adds, removes, swaps, simultaneous add+remove, no-change updates, failure domain cross-validation). Promotion mechanics are sound, ratcheting is handled properly.

One minor nit: config/v1/types_infrastructure.go:1699 still says "in TechPreview" in the vcenters godoc, but the field is now Default.

I'll update the infrastructure go file to no longer mention TechPreview.

@openshift-ci openshift-ci Bot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Aug 5, 2026
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

Comment thread config/v1/types_infrastructure.go
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@vr4manta

vr4manta commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

Need to rebase and get this new featuregate variant updated.

@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

Comment thread config/v1/types_infrastructure.go Outdated
Comment thread features/features.go
productScope(ocpSpecific).
enhancementPR("https://github.com/openshift/enhancements/pull/1961").
enable(inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).
enable(inDefault(), inOKD(), inTechPreviewNoUpgrade(), inDevPreviewNoUpgrade()).

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

verify-feature-promotion is failing: [sig-cluster-lifecycle][OCPFeatureGate:VSphereMultiVCenterDay2][platform:vsphere] vSphere failure domain ValidatingAdmissionPolicies should block removing a failure domain referenced by a Machine has a 72% pass rate (needs >= 95%). This blocks promotion.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I can run some more. Its odd cause i see 84 percent in sippy.

@vr4manta

vr4manta commented Aug 7, 2026

Copy link
Copy Markdown
Contributor Author

/retest

@openshift-ci

openshift-ci Bot commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

@vr4manta: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/verify-feature-promotion 74abde3 link true /test verify-feature-promotion
ci/prow/verify-hypershift-integration 74abde3 link true /test verify-hypershift-integration

Full PR test history. Your PR dashboard.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

jira/valid-reference Indicates that this PR references a valid Jira ticket of any type. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants